#include "cpu/exec/template-start.h"

#define instr push

static void do_execute() {
    if (DATA_BYTE == 2){
        reg_l(R_ESP) -= 2;
        swaddr_write(reg_l(R_ESP), 2, (DATA_TYPE)op_src -> val);
    }else {
        if (DATA_BYTE == 1) op_src -> val = (int8_t)op_src -> val;
        reg_l(R_ESP) -= 4;
        swaddr_write(reg_l(R_ESP), 4, op_src -> val);
    }
    
    print_asm_template1();
}

make_instr_helper(i)

#if DATA_BYTE == 2 || DATA_BYTE == 4
make_instr_helper(r)
make_instr_helper(rm)
#endif

#include "cpu/exec/template-end.h"